import { def } from "@vue/shared";
import toTree from "../utils/toTree"


let modules=import.meta.glob("../pages/home/**/*.vue")
// 在vite中还有个方法 eager可以获取默认导出的组件
let syncComponent =import.meta.globEager("../pages/home/**/*.vue")
// console.log(modules)
console.log(syncComponent)

// 约定式路由
// 1.约定所有的页面都必须写在pages/home这个文件夹下面
// 2.所有页面都需要使用文件夹+index.vue来编写方式


// 声明一个扁平的路由配置数组
let flatRoutes =[]

// 遍历modules
for(let path in modules){
    // console.log(path)
    let component =modules[path];//获取读取的组件
    let syncCom= syncComponent[path].default
    // console.log(syncCom)
    // console.log(component)
    let reg= /^\.{2}\/pages\/home\/(.+)\/index\.vue$/

    // 使用正确匹配路径
    let match=path.match(reg)
    // console.log(match)
    if(match){ 
        // 创建一个路由对象
        let route ={
            path:match[1],
            component,
            meta:syncCom["meta"]??{}
        }
        flatRoutes.push(route)
    }

}
// console.log(flatRoutes)
// 二次处理数据，因为扁平转树形，需要id或者pid,现在给每个对象都添加上id和pid

flatRoutes.forEach(route=>{
    // 给每个对象添加上id和pid
    let pathArr =route.path.split('/')
    // console.log(pathArr)
    if(pathArr.length===1){
        // 说明这些都是父节点，只需要添加id就行
        route.id=pathArr.join("")
    }else{ 
        // 不是父节点，需要加上id和Pid
        // 先拷贝pathArr
        let newPathArr = [...pathArr]
        route.id=newPathArr.join('-')
        let path=newPathArr.pop()
        route.pid=newPathArr.join("-")
        // 为了让我们的子路由的配置符合vue路由的配置
        route.path=path
    }

})

// 扁平转树形
let routes =toTree(flatRoutes,"id","pid")
console.log(routes)
export default routes
